package com.anelsoft.api.fundamental.lib;

import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;


public class FuncoesNumericas {

    // Retorna Valor Inteiro
    public static int getInteger(boolean pValor) {
    
        if (pValor) {
            return 1;
        } else {
            return 0;
        }
    
    }

    // Retorna Valor Inteiro
    public static int getInteger(String pValor) {
    
        try {
            return Integer.parseInt(pValor);
        } catch (Exception e) {
            return -1;
        }
    }

    // Retorna Valor Long
    public static long getLong(String pValor) {
    
        try {
            BigInteger bigInt = new BigInteger(pValor);
            return bigInt.longValue();
        } catch (Exception e) {
            return -1;
        }
    }

    // Retorna Valor Double
    public static double getDouble(String pValor) {
    
        pValor = pValor.replaceAll("\\.", "").replaceAll(",", ".");
        try {
            return Double.parseDouble(pValor);
        } catch (Exception e) {
            return -1;
        }
    }

    public static Float strToFloat(String pValor) {
    
        if ((pValor == null) || (pValor.trim().length() == 0)) {
            return new Float(-1);
        }
    
        return new Float(pValor.replaceAll("\\.", "").replaceAll(",", "."));
    }

    public static String positiveOrNull(int value) {
    
        return value >= 0 ? String.valueOf(value) : "NULL";
    }

    public static String formatMoeda(Double pValor) {
    
        if (pValor == null) {
            return "";
        }
    
        DecimalFormat df = new DecimalFormat("0.00"/*
                                                    * , new DecimalFormatSymbols(new Locale("pt",
                                                    * "BR"))
                                                    */);
        df.setGroupingUsed(false);
        return df.format(pValor);
    }

    public static String formatDouble(Float pValor) {
    
        if (pValor == null) {
            return "";
        }
    
        NumberFormat format = DecimalFormat.getInstance(new Locale("pt", "BR"));
        format.setGroupingUsed(false);
        return format.format(pValor);
    }

    public static String formatDouble(Float valor, int numeroDecimal) {
    
        Locale locale = new Locale("PT", "BR");
        if (valor == null) {
            return "";
        }
        NumberFormat format = DecimalFormat.getInstance(locale);
        if (numeroDecimal >= 0) {
            format.setMaximumFractionDigits(numeroDecimal);
            format.setMinimumFractionDigits(numeroDecimal);
        }
        format.setGroupingUsed(true);
        return format.format(valor);
    }

}
